           -  ""
                      . 
                           1992

                    

                      "     "

                      (  1.3)


             

             II.    ""


           -
  "",  ,  -
 .


   

   1.    
   2.   
   3.   
   .      
                ( \SYSTEM\DEFINES\COMMAND.DEF)


   1.    

    ,       
  ,     ,
       .
       EEA0-FFF9  ( -
     )  ROM1.
          -
  :

CALLCMD EQU $02F0 ;      
CMDHAND EQU $FFF4 ;      ROM1

        LDX #.
        LDA #1
        LDY #2
        JSR CALLCMD    ;  JSR CMDHAND

       ,    
,   4.


   2.   

       ( X)  FCB    
  ,   -    
CURFILE     FCB.
     'AY=' : ' = <'  (
), 'Y = >' ( ).


   2.1. RSTSCAN -    

             
    .

 :  X = 00,
    (INBUF)->  , SAVPOS -  -;
 :
    SAVPOS -      ( -
       SAVPOS -     
         INBUF);
     X,Y.


   2.2. SKIPBLAN -  

          .

 : X = 02,
    (INBUF)->  , SAVPOS -  -;
 :
      -   ;
     X,Y.


   2.3. SCANTRMN -  -

     ,    .
 (   ,   -
  , , ,   .   -
. : ,   , -
      ';'  ,  -
    (, ) -  -
 .
           -
     :
    :    .  :  /  \  ,  ;  C
    :    0  1  2  3  4    5   6  7    )

 : X = 04,
    (INBUF)->  , SAVPOS -  -;
    Y -     :
 :
    A=0, C=Z=1,    -    -
           Y..7 ;
    A=., C=Z=0    - ;
     X,Y.


   2.4. SCANTRM -  -

     ,    (  -
 ).

 : X = 06,
    (INBUF)->  , SAVPOS -  -;
 :
    A=, C=0, Y=8,    -  -
        -  ;
    A=0, C=1, Y=5..7,    -  
       -  (   Y>4);
    A=, C=1, Y=0..4,   -  -
        -   (  Y<5).


   2.5. SCANCHK -    

     ,     .

 : X = 08,
    (INBUF)->  , SAVPOS -  -;
    A -   ();
 :
    Z=1,   -    ;
    Z=0,    - ;
     X,Y.


   2.6. SCANNUMH -   
        SCANNUMD -   

        .   -
  - .

 : X = 0A/0C,
    (INBUF)->  , SAVPOS -  -;
            -
         (16/10-).
 :
    AX=, C=0, Y=0     -  ,
    AX=0,     C=1, Y=0     -  ,
    AX=, C=1, Y=1..4  -  .
         .


   2.7. SCANNAME -   

     ( )     
  FCB.     .

 : X = 0E,
    (INBUF)->  , SAVPOS -  -;
    (CURFILE)->  FCB.
 :
    (CURFILE)->FCB.NAME -       ( 15
      );
    Y=POSEND -     FCB;
    POSPNT -        0,
        ;
       .


   2.8. SCANPATH -    

         ,    
     ()  
 FCB  .
 (  :  [[@] N:] {/} {\{\}} []  , :
     N -   ( ),
      -   (. 2.7),
      -      '*','?'.
      ( K),   
    ,   -
;   -  4..7 (,',',,';').

 : X = 10,
    (INBUF)->  , SAVPOS -  -;
    (CURFILE) ->  FCB.
 :
             (
      )    FCB;
    (CURFILE)->FCB.NAME,FCB.FILENUM -   
        K (FCB      );
    C=0, Z=1 -  :     ;
    C=0, Z=0 -  :     ();
    C=1, A=  -      (
          );
    POSEND, POSPNT -   2.7;
       .


   2.9. SCANPAT -     

     SCANPATH,      
   FCB   '???..???' (" ").

 : X = 12,
    . 2.8.
 :
    . 2.8;
       - CURFILE->FCB.NAME = '???..???';
    Z=0 .


   2.10. SCANKEYS -   /

    '/'        
 ,   SCANPARS .

 : X = 14,
    (INBUF)->  , SAVPOS -  -;
    . 2.11.
 :
     KEYS  ,  .2.11;
     '/'  ,      
      .


   2.11. SCANPARS -   /

           ','  (
  );  .  .II.3.6.;  
- ,   .

 : X = 16,
    (INBUF)->  , SAVPOS -  -;
    KEYS -    ;
    PARVALS -    ;
    VARVALS -    ;
    C=0/1 - /  KEYS  PARVALS.
 :
           PAR-
      VALS   2- ,   
               
      (    K: PARVALS+(K&1F)*2 - 2.);
         KEYS  (  K -
        KEYS+K&1F)  :
      [7]=0/1:  K  /,
      [6]=0/1:  K  /;  , :
      [5]=0/1: / -  ;
        ('#'  ), 
         (   VARVALS+
      +(K&1F)*2 - 2).


   2.12. SCANCMD -    

        ,  
 .    .   - -
 .

 : X = 18,
    (INBUF)->  , SAVPOS -  -;
    (AY)->   ( DCI-,  - 0).
 :
    C=0/1 -    /  ;
    X - N  (  .  2.25),   -
          -  +1;
      .


   2.13. OUTDECIM -   

       (1/2 )     -
   3  5      -
.

 : X = 1A,
    AY -    ;
    C=0/1: 1/2  (Y/AY, 3/5   ).
 :
     3  5    (A)Y  -
        ;
       C=0  A/=0 -      ,
        .


   2.14. OUTFILE -    

           .  
   W  L,      
(    W   ).

 : X = 1C,
    (AY)->     (.  SEARCH );
      W,L,P   KEYS;
    OTSTUP -       
      .
 :
         .


   2.15. OUTDATE -  

 : X = 1E,
    AY - , -     .
 :
       .MM.    .


   2.16. OUTERR -    

          (  -
    ).

 : X = 20,
    A -  :
         00 -            - 
         01 -  
         02 -  
         03 -  
         04 -   
         05 -    
         06 -   VT
         07 -   
         08 - / 
         09 -   
         0A -   
         0B -  :  
         0C -   
         0D -  
         0E -   
         0F -  
         10 -  :  DPB
         11 -   /
         12 -          - 
         13 - , , ? -   RWTS
         14 -            -   RWTS
         15 - :           -   RWTS
 :
         .


   2.17. CHOICE -    

           -
     .

 : X = 22,
    (AY)->    ()  :
       <__0, .. __N> ,   _
       _K -  ,   -
        K: <00, .. 00, 10> ( [7] = 1
           ).
 :
        ,     5F
      (    )  -
           :   
        1     ;
    A -  K ( __K);
        .


   2.18. LOAD -  

           FCB  
.  (!)   ,    
   SEARCH .

 : X = 25 (24+1),
    (CURFILE)-> FCB         
       (FCB   !);
      A,L,P,S      -
      ,     LOAD  .
 :
     ;
      .
            
    .


   2.19. SAVE -  

          FCB  .

 : X = 26/27,
    (CURFILE)-> FCB       (
      X=26 CURFILE   FCB,   X=27 -
         );
      A,L,P,S      -
      ,     SAVE  .
 :
     ;
     .
            
 .


   2.20. EXEC -   

         FCB   
        . -
     .

 : X = 29 (28+1),
    (CURFILE)-> FCB       (FCB
         !).
 :
       :
    -     ,  FCB ;
    -     .
      :
    -  FCB ,    ;
    -      .
            
.


   2.21. GROUP -   

        .
 (        
       , - 
   .    -
         
       ,  
       . )

 : X = 2B (2A+1),
    (CURFILE)-> FCB   (  !)
         ;
    (AY)->    ;
         KEYS  PARVALS.
     ,  GROUPX    -
 ,      -
 ,       -
.    .


   2.22. GROUPX -   

          -
       
     .
         -
  :
    N -  ,
    H -    ,
    X -   .
        .

 : X = 2D (2C+1),
    (CURFILE)-> FCB   ( GROUP)  -
           .
 :
    C=0/1 -     /;
       (   AY
       GROUP)       -
      :
    - N=0/1 -  1/2   (2  -
              X);
    - C=0/1 -  /;
    - FCB       -
          ;
    - (DMA)->(:CATBUF=9F00) - FPB    ;
         ;
   FCB      !
            
 .


   2.23. GROUPFK -    

          -
 .       -
   2  ( X)     ( 2
      ).

 : X = 2F (2E+1),
    CURFILE -> FCB      ( 
      )    ;
    C - pe ope  K: 0 - ao='*', 1 - ao -
         . ( C=0 , , 
       ,  C=1 -     X).
     GROUPX.
            
 .


   2.24. RUN_SET -   /  

     ,    , ,
       ,  -
       -
.    .

 : X = 31 (30+1),
    (INBUF)->         
       ,   .
 :
        
         
      .
            
     .


   2.25. PROCCALL -   

     ,   -
  ,     .  
  .

 : X = 33 (32+1),
    A -  :
         00 - DIR    -  
         02 - DEL    -  ()
         04 - RD     -  ()
         06 - LOCK   -   ()
         08 - UNLOCK -   ()
         0A - REN    -  ()
         0C - PATH   -     
         0E - CD     -   
         10 - LOAD   -  ()
         12 - SAVE   -  
         14 - COPY   -  (), ()
         16 - TYPE   -  ()  
         18 - DUMP   -   ()
         1A - DATE   - / 
         1C - SCRN   -  
         1E - BOOT   -  
         20 - VFY    -    
         22 - :      -    
         24 - -      -   
         26 - ?      -   
         28 - WHEN   -  
         2A - IF     -   
         2C - ELSE   -   
         2E - ELIF   -  
         30 - ENDIF  -   
         32 - EXIT   -  ;
    (INBUF)->  , SAVPOS -  - -
            ;
             
      ,       KEYS  PARVALS.
 :
     .
            
     .


   2.26. PROCLINE -   

       :  -
  PROCCMD     C=1 -  RUN_SET.

 : X = 35 (34+1),
    (INBUF)->         
      .
            
     .


   2.27. PROCCMD -     

     SCANCMD ,    -
,  PROCCALL   .

 : X = 37 (36+1),
    (INBUF)->       -
      ,    .
 :
    C=0/1 -   /  .
            
     .


   2.28. RSTVECTS -   

        -
  (. 3).

 : X = 38.


   2.29. RESETIO -   -

      -  (-
  ).

 : X = 3A,
    C=0 -    - RDKEY
       CHAROUT ;
    C=1 -   +       :
          FCB      -
      ;


   3.   

   B     ,  -
 -    
  .       
     .
      , ,  -
    :

0: ERRVECT  ($FFF7) => ECMHAND:       -
      .
           RESETIO  C=1.

2: H_INSTDR (RWTS ) => IDRHAND:   RWTS.
            
        ,         
             -
      .
      : X - N  -, Y - N .
       "  Y:   X" 
         .

4: H_CHKERR (RWTS ) => ERWHAND:  RWTS.
         RWTS    .
      :  A=1..3 - N  .
      : Z=1 -   ,
                Z=0,C=0,Y=0 -  ,
                Z=0,C=1,Y=2 -   " ".
             
      (, , ).
           .

6: RSTVECT  ($0311) => RSTHAND:  .
         ,  -
        ,  ( )
                
        CALLDOS(0).

8: BRKVECT  ($0301) => BRKHAND:  BRK.
       "   < BRK>"   -
         CALLDOS(0).

A: RDKEY    ($0347) => KEYIN: .   .

C: CHAROUT  ($0374) => SCROUT: .   .

         ROM1 
 ( -,     IOSUB),
       
.

           
SETVECT ($FFF1)  :
   X -   (!),
   C=0, AY -      ,
   C=1 -    .
   AY     -
 (    ).
    RSTVECTS          
 .
